Computing system that generates a predicted routine of a user

ABSTRACT

Described herein are technologies related to generating a predicted routine of a user of a mobile computing device. Location entries generated by the mobile computing device are processed to generate visit entries, wherein the visit entries are representative of visits made by the user to places over several days. An input sequence of states is constructed based upon the visit entries, wherein each state has a place identifier assigned thereto, and further wherein each state corresponds to a time interval of predefined length. A predicted routine of the user is generated based upon the input sequence of states.

BACKGROUND

Lives of people are typically filled with routine. For example, a personwill tend to do similar activities during similar times of the day,week, or month. For instance, on weekdays a person may commute to workor school and then return home; the person may take a child to daycareand thereafter pick the child up from daycare; on certain days theperson may go to a class or to the gym, while on weekends the person mayvisit locations with family and friends such as parks, events, orvenues.

Computing systems have been developed that are configured to receiveinput from a person as to recurring events in the life of the person.For instance, a conventional computing system can receive input from theperson that indicates that the person typically leaves a work locationat a certain time every workday. Hence, the computing system can providea reminder to the person as to when the person is to leave the worklocation and can additionally provide information as to trafficconditions at the time the person is expected to leave the worklocation.

The conventional computing system may also be configured to provide alocation-based recommendation to a person as a function of a currentlocation of the person. For example, when the computing system receivesan indication that the person is at a grocery store, the computingsystem can be configured to output a recommendation that the person nextvisit a coffee shop that is in geographic proximity to the grocerystore. In this example, the computing system does not predict that theperson will go to the coffee shop, but instead recommends that theperson visit the coffee shop due to the known current location of theperson.

Conventionally, predicting a routine of a person is a difficult task dueat least partially to noise that exists in location data reported bymobile computing devices. For example, a mobile computing device doesnot report its location to a server computing device with any definedfrequency; instead, an operating system of the mobile computing devicecontrols when location data is reported to a server computing devicethat is in network communication with the mobile computing device. In anexample, when the mobile computing device is in a power saving mode, themobile computing device will not report its geographic location. Evenwhen the mobile computing device is not in a power saving mode, themobile computing device may only report its location upon detecting thatthe mobile computing device has moved a threshold distance from a mostrecently reported location. Mobile computing devices do not report theirlocations at set frequencies in order to conserve battery power that isconsumed when transmitting data over network connections. Still further,there is currently a lack of computer-implemented models that allow forroutines of people to be accurately predicted.

SUMMARY

The following is a brief summary of subject matter that is described ingreater detail herein. This summary is not intended to be limiting as tothe scope of the claims.

Described herein are various technologies pertaining to a computingsystem that is configured to predict a routine of a user of a mobilecomputing device, wherein the routine of the user includes places thatare predicted to be visited by the user during several future timeintervals of predefined length (e.g., 30 minutes) over a time window(e.g., one week, one month, etc.). The computing system described hereinis configured to receive location entries (collectively referred to aslocation data) reported by the mobile computing device of the person,wherein a location entry includes a latitude/longitude pair and atimestamp, and further wherein the timestamp indicates when thelatitude/longitude pair was generated by the mobile computing device.Location entries are collected over some period of time, such as a weekor a month, and are anonymized. Accordingly, if a malicious entity wereto acquire the location data, the malicious entity would be unable toascertain an identity of the person or geographic traces of the person.

The computing system can optionally be configured to “clean” thelocation data to remove location entries therefrom that have ambiguityassociated therewith and/or to remove location entries that areanomalous. For instance, when a location entry includes alatitude/longitude pair that is over some threshold geographic distancefrom any other location entry, such location entry may be removed fromthe location data. This situation can occur when, for example, themobile computing device is powered off or enters low power mode andaccordingly fails to report location entries. In another example, whenan amount of time between a location entry and any other location entryis greater than a predefined amount of time, the location entry can beremoved from the location data. In another exemplary embodiment, suchlocation entries can be retained and subjected to clustering, asdescribed below.

The location data (optionally after being “cleaned”) can be processed toidentify visits of the user, wherein a visit is when the user is at aplace (e.g., a business, home, work, a home of a friend, etc.) for atleast some threshold amount of time (e.g., 10 minutes). To identifyvisits, the computing system clusters location entries as a function oftime and space to form location clusters, such that location entriesthat are both temporally and geographically proximate to one another areclustered together in a location cluster, while location entries thatare not proximate to one another in space are placed in differentlocation clusters. In addition, the computing system can parameterizethe clustering algorithm with suitable parameters to prevent theclustering algorithm from forming a location cluster that includeslocation entries that are more than some threshold geographic distancefrom one another (e.g., 100 meters). The computing system can thenfilter location clusters based upon location entries that are includedin the location clusters. For instance, the computing system can filtera location cluster from the location clusters when an amount of timebetween an earliest timestamp and a latest timestamp of location entriesin the location cluster is less than ten minutes. For example, alocation cluster of location entries may correspond to when the personis sitting in traffic at an intersection; the computing system canfilter such location cluster, as the person is not intending to visit alocation when stuck in traffic.

For remaining location clusters, the computing system can map suchclusters to an identity of a place, wherein the identity of the placecan be a name of the place (e.g., “business A”) or a category of theplace (e.g., “grocery”). For instance, the computing system can computemedian latitude and longitude values for location entries in a locationcluster and can map the median latitude and longitude values to a placethrough use of any suitable reverse geocoding service. The computingsystem can then assign an identity of the place to the location cluster.Thus, the computing system can assign a category “gym” to the locationcluster when a place that corresponds to the location cluster is a gym.Based upon the location clusters and identities of places assigned tothe location clusters, the computing system can generate visit entriesthat are representative of visits of the person over time, wherein eachvisit entry includes: 1) a date when the visit started; 2) an identityof a place that the user visited; and 3) a duration of the visit.

The computing system, based upon the visit entries, can assign labels totime intervals of predefined length over some predefined historic windowof time, wherein the labels are indicative of identities of places thatthe user visited in the past. For example, the predefined length of thetime intervals may be 30 minutes, and the window of time may be twoweeks, such that 672 time intervals are assigned labels. For timeintervals where more than one place was visited by the person (asevidenced by the visit entries), the computing system can determinewhich place was visited longest in the time interval from amongst allplaces that can be mapped to the time interval, and can assign a labelto the time interval that is indicative of the identity of thedetermined place. In addition, the computing system can assign the label“unknown” to time intervals that have no visits corresponding thereto.Hence, in this example, a sequence of 672 labels is generated, with eachlabel corresponding to a time interval of 30 minutes.

The computing system processes the sequence of labels and outputs apredicted routine of the user based upon such sequence of labels. In anexemplary embodiment, the computing system can employ a frequent itemsetmining algorithm to output the predicted routine of the person. In suchembodiment, the computing system assigns item labels to each timeinterval in the sequence of time intervals. An item label may betemporally-related, such “8 AM”, “morning”, “weekday”, etc. In anotherexample, an item label may be spatially-related, such that the itemlabel can indicate a category corresponding to a place visited by theperson, a name of a business corresponding to the place, and so forth.The computing system can then use a frequent itemset mining algorithm toidentify frequently co-occurring item labels (using statisticalthresholds), and output rule patterns based upon the frequentlyco-occurring item labels. The computing system can employ the rulepatterns to generate a predicted routine of the user. Hence, using thisapproach, the computing system can output a predicted routine thatindicates that on weekdays at 9:30 a.m. during the next week the user islikely to be at work.

In another exemplary embodiment, a sequence to sequence model can beemployed to output a predicted routine of the user based upon thesequence of labels described above. For example, the sequence tosequence model can include an encoder and a decoder, each of whichincludes a plurality of recurrent neural networks (RNNs). The output ofthe sequence to sequence model is a sequence of labels assigned tofuture time intervals of predefined length over a predefined futurewindow of time, wherein the labels are indicative of identities ofplaces that the user is predicted to visit during such future timeintervals. In yet another exemplary embodiment, the computing system canemploy a convolutional network to output a predicted routine of theuser, wherein the convolutional network is a masked time-dilatedconvolutional network (MTCN). In this exemplary embodiment, the MTCNreceives the sequence of labels and outputs a sequence of labels thatcorrespond to future time intervals of predefined length over apredefined future window of time, wherein the labels are indicative ofidentities of places that the user is predicted to visit during suchfuture time intervals. The MTCN exhibits some advantages over theRNN-based sequence to sequence model referenced above, namely that thecomputing system outputting the predicted routine of the user throughuse of the MTCN is able to consider a longer sequence of labels comparedto when the computing system uses the sequence to sequence model tooutput the predicted routine of the user.

Once the computing system has output the predicted routine of the user,the computing system can transmit notifications and/or recommendationsto a computing device of the user and/or can perform some othercomputer-based action. For instance, the computing system can transmit arecommendation for the user to leave a current location at a certaintime in order for the user to reach a place where the user is predictedto visit at the time that the user is predicted to visit the place inthe predicted routine. In another example, the computing system cantransmit a recommendation to the user as to a place for the user tovisit based upon a place that is included in the predicted routine. Thisrecommendation can allow the user to perform some planning and decidewhether the place is desirable to visit. In yet another example, thecomputing system can generate an electronic calendar entry based uponthe predicted routine, can automatically generate a reservation requestbased upon the predicted routine, etc. Still further, the computingsystem can perform analytics based upon predicted routines of numeroususers. Resultant analytic information can be useful to city planners,for example, when planning on where to position bus stops, where to zonefor certain types of businesses, and so forth.

The above summary presents a simplified summary in order to provide abasic understanding of some aspects of the systems and/or methodsdiscussed herein. This summary is not an extensive overview of thesystems and/or methods discussed herein. It is not intended to identifykey/critical elements or to delineate the scope of such systems and/ormethods. Its sole purpose is to present some concepts in a simplifiedform as a prelude to the more detailed description that is presentedlater.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a schematic of an exemplary system that is configured topredict routines of people.

FIG. 2 is a schematic that illustrates an exemplary routine of a user.

FIG. 3 is a schematic that illustrates a module that is configured toidentify a visit of a user.

FIG. 4 is a schematic that illustrates a module that is configured togenerate a sequence of labels that are indicative of identities and/orcategories of places, where each label is assigned to an interval oftime of predefined length.

FIG. 5 is a schematic that illustrates a module that is configured toemploy a frequent item sent mining algorithm to predict a routine of auser.

FIG. 6 is a schematic that illustrates an exemplary sequence to sequencemodel that is employable to predict a routine of a user based upon asequence of labels that are indicative of identities and/or categoriesof places visited by a user.

FIG. 7 is a schematic that illustrates an exemplary convolutionalnetwork that is employable to predict a routine of a user based upon asequence of labels that are indicative of identities and/or categoriesof places visited by a user.

FIG. 8 is a graphical user interface that is configured to present auser with a notification or recommendation based upon a predictedroutine of the user.

FIG. 9 is a functional block diagram of an exemplary computing systemthat is configured to generate analytics data based upon multiplepredicted routines of users.

FIG. 10 is a flow diagram illustrating an exemplary methodology forpredicting a routine of a user based upon observed visits of the user.

FIG. 11 is a functional block diagram of an exemplary computing system.

DETAILED DESCRIPTION

Various technologies pertaining to predicting routines of users ofmobile computing devices are now described with reference to thedrawings, wherein like reference numerals are used to refer to likeelements throughout. In the following description, for purposes ofexplanation, numerous specific details are set forth in order to providea thorough understanding of one or more aspects. It may be evident,however, that such aspect(s) may be practiced without these specificdetails. In other instances, well-known structures and devices are shownin block diagram form in order to facilitate describing one or moreaspects. Further, it is to be understood that functionality that isdescribed as being carried out by certain system components may beperformed by multiple components. Similarly, for instance, a componentmay be configured to perform functionality that is described as beingcarried out by multiple components.

Moreover, the term “or” is intended to mean an inclusive “or” ratherthan an exclusive “or.” That is, unless specified otherwise, or clearfrom the context, the phrase “X employs A or B” is intended to mean anyof the natural inclusive permutations. That is, the phrase “X employs Aor B” is satisfied by any of the following instances: X employs A; Xemploys B; or X employs both A and B. In addition, the articles “a” and“an” as used in this application and the appended claims shouldgenerally be construed to mean “one or more” unless specified otherwiseor clear from the context to be directed to a singular form.

Further, as used herein, the terms “component” and “system” are intendedto encompass computer-readable data storage that is configured withcomputer-executable instructions that cause certain functionality to beperformed when executed by a processor. The computer-executableinstructions may include a routine, a function, or the like. It is alsoto be understood that a component or system may be localized on a singledevice or distributed across several devices. Further, as used herein,the term “exemplary” is intended to mean serving as an illustration orexample of something and is not intended to indicate a preference.

Described herein are various technologies pertaining to predictingroutines of users of mobile computing devices based upon locationentries generated by the mobile computing devices of the users. As willbe described in greater detail herein, a mobile computing device of auser generates several location entries over time, wherein each locationentry includes: 1) latitude/longitude pair; and 2) a timestamp that isindicative of a time that the mobile computing device generated thelatitude/longitude pair. A computing system receives location entriesfrom the mobile computing device processes the location entries togenerate visit entries, wherein a visit entry is representative of avisit of the user. A visit entry includes: 1) an identity of a place,wherein the identity of the place can be a name of the place or acategory of the place; 2) a date when the visit started; 3) a time whenthe visit started; and 4) a duration of the visit. The duration of eachvisit, in an example, is above a predefined threshold (such as 10minutes). A sequence of states is generated based upon the visitentries, wherein each state comprises an identity of a place, andfurther wherein each state corresponds to a past time interval of apredefined length (e.g., 30 minutes). The computing system is configuredto generate a predicted routine of the user over some predefined amountof time into the future (e.g., a next half hour, one day, one week,),wherein the predicted routine includes a sequence of states thatcomprise identities of places that the user is predicted to visit over afuture window of time, wherein each state corresponds to a predefinedlength of time (e.g., 30 minutes). The computing system can thentransmit an electronic message to the mobile computing device of theuser based upon the predicted routine, wherein the electronic messagecan be a notification for the user, a recommendation for the user, orthe like.

With reference now to FIG. 1, a schematic of an exemplary computingsystem 100 that is configured to predict a routine of a user of a mobilecomputing device is illustrated. A routine is a sequence of placesvisited by the user over some predefined amount of time, such as twoweeks or a month; accordingly, a predicted routine is a sequence ofplaces that the user is predicted to visit over the predefined amount oftime. As will be described in greater detail below, the predictedroutine output by the computing system 100 can be a sequence of labelsthat identify places, wherein each label is assigned to a time intervalof predefined length. Hence, in an example, the predicted routine maycover a future one-week window of time, and the computing system 100 canassign a label to each 30-minute interval in the one-week window oftime. This is in contrast to conventional approaches, wherein suchconventional approaches include generation of recommendations to a userbased upon current location of the user (and observed actions of otherusers) and/or include generation of messages based upon explicit inputprovided by a user as to a future location of the user.

The computing system 100 is in network communication with a mobilecomputing device 102 of the user, wherein the mobile computing device102 is carried by the user as the user moves about a geographic region104. For example, the mobile computing device 102 can be a mobiletelephone, a wearable computing device (e.g., a watch or a head-mountedcomputing device), a tablet computing device, etc.). As the mobilecomputing device 102 moves in the geographic region 104, the mobilecomputing device 102 generates location entries and transmits thelocation entries to the computing system 100.

The mobile computing device 102 generates and transmits the locationentries based upon instructions executed by a processor of the mobilecomputing device 102. To conserve energy of a battery of the mobilecomputing device 102, the mobile computing device 102 fails to transmitlocation entries to the computing system 100 at a predefined frequency.Instead, the mobile computing device 102 is configured with logic suchthat the mobile computing device 102, from time to time, generates alocation entry and transmits the location entry to the computing system100. A location entry comprises: 1) a latitude/longitude pair; and 2) atimestamp that identifies when the mobile computing device 102 generatedthe latitude/longitude pair. The mobile computing device 102, forexample, includes a Global Positioning System (GPS) sensor thatgenerates latitude/longitude pairs. In an exemplary embodiment, toconserve energy of a battery of the mobile computing device 102 and/orto conserve an amount of data transmitted over a network connection, themobile computing device 102 may only transmit a location entry to thecomputing system 100 when the mobile computing device 102 has moved somethreshold distance from a location from which the mobile computingdevice 102 most recently transmitted a location entry to the computingsystem 100 (e.g., the mobile computing device 102 must move by somepredefined distance before the mobile computing device 102 will transmita location entry to the computing system 100). In another example, themobile computing device 102 may transmit a location entry to thecomputing system 100 only after a predefined amount of time has passedsince the mobile computing device 102 most recently transmitted alocation entry to the computing system 100. Additionally, the mobilecomputing device 102 may not transmit a location entry when the mobilecomputing device 102 is in a low-power state, when the mobile computingdevice 102 is unable to generate a location entry with sufficientaccuracy, when the mobile computing device 102 is powered off, etc. Itcan be ascertained, however, that the mobile computing device 102transmits several location entries over time to the computing system100, such that the computing system 100 receives a time-ordered sequenceof location entries generated by the mobile computing device 102.

The computing system 100 includes a processor 106 and memory 108 thatincludes instructions that are executed by the processor 106. Thecomputing system 100 additionally includes a data store 110 thatcomprises location entries 112 that have been transmitted to thecomputing system 100 by the mobile computing device 102 as the mobilecomputing device 102 moved about the geographic region 104.

The memory 108 optionally includes a data cleaner module 114 that isconfigured to “clean” the location entries 112 transmitted to thecomputing system 100 by the mobile computing device 102. For example,the data cleaner module 114 can be configured to remove entries from thelocation entries 112 that are somehow inconsistent with other entries inthe location entries 112, that are inconsistent with locationinformation explicitly provided by the user (e.g., as indicated in ameeting in a calendar application), that are some threshold distancefrom any other entry in the location entries 112, etc. It is noted thatdata cleaning is optional, and in another exemplary embodiment thelocation entries 112 can be subjected to clustering (as described ingreater detail below) without being subjected to “cleaning”. Thelocation entries 112 can have an anonymized user identifier associatedtherewith; accordingly, if a malicious entity were to acquire thelocation entries 112 from the data store 110, the malicious entity wouldbe unable to ascertain an identity of the user to which the locationentries 112 correspond.

The memory 108 also includes a visit definer module 116 that isconfigured to identify visits of the user based upon the locationentries 112 (after the data cleaner module 114 has cleaned the locationentries 112). The visit definer module 116 can identify a visit byascertaining, based upon the location entries 112, that the user was ata place for at least a threshold amount of time (e.g., at least 10minutes). Accordingly, based upon the location entries 112, the visitdefiner module 116 generates visit entries 118, wherein each visit entrycan include: 1) an anonymized user identifier; 2) an identifier for aplace of the visit occurred (where the identifier for the place can be aname of the place or a category of the place); 3) a date when the visitstarted; 4) a time when the visit started; and 5) a duration of thevisit (e.g., an amount of time that the person was at the place).Accordingly, the visit entries 118 represent a sequence of visits of theuser of the mobile computing device 102 over some window of time (e.g.,one month, two months, etc.).

The memory 108 also includes an input definer module 120 that isconfigured to generate a sequence of input states 121 based upon thevisit entries 118, wherein each state in the sequence of input states121 includes either an identifier of a respective place visited by theuser during a time interval over the window of time or an “unknown”label for the time interval. More specifically, the input definer module120 can define a time interval of a predefined length, such as 30minutes. The input definer module 120 can assign an identifier or aplace or an “unknown” label to each time interval of the predefinedlength over a defined time range, such as two weeks one month, twomonths, or the like, wherein the input definer module 120 assigns theidentifiers to the time intervals based upon the visit entries 118.Accordingly, and in an example, a visit entry in the visit entries 118may indicate that the person was at place “A” between 10:40 AM and 11:40AM on date “B”. Based upon this visit entry, and with the predefinedtime interval being 30 minutes, the input definer module 120 can assignan identifier for place “A” to the time interval that corresponds to10:30 AM-11:00 AM on date “B”. Similarly, the input definer module 120can assign an identifier for place “A” to the time interval thatcorresponds to 11:00 AM-11:30 AM on date “B”. When the visit entries 118indicate that, for a particular time interval, the user had visits tomultiple places, the input definer module 120 can assign a an identifierof a place to the particular time interval that the user was visitinglongest within the particular time interval from amongst all placesvisited by the user during the particular time interval. The inputdefiner module 120 can assign a label of “unknown” to time intervalsthat have no corresponding visit entry in the visit entries 118.Accordingly, output of the input definer module 120 is the sequence ofstates 121, with each state including an identifier of a place visitedby the user during a time interval of predefined length or an “unknown”label, and wherein the sequence of states 121 corresponds to apredefined time range (e.g., two weeks, one month, etc.).

The computing system 100 additionally includes a routine predictormodule 122 that is configured to receive the sequence of states 121output by the input definer module 120 and is further configured togenerate a predicted routine of the user based upon such sequence ofstates 121. The predicted routine of the user may have a form that issimilar to the form of the sequence of states 121 that is provided asinput to the routine predictor module 122. For example, the routinepredictor module 122 can generate an output sequence of states, whereineach state includes an identifier of a respective place that the user ispredicted to visit, wherein each state corresponds to a future timeinterval of a predefined length, and further wherein the output sequenceof states covers a future window of time of predefined length (e.g., thenext week, the next two weeks, the next month, etc.). In anotherexample, each state can include one or more place identifiers, and canfurther include confidence values that are indicative of probabilitiesthat the user will visit one or more places identified by the one ormore place identifiers. For instance, a state corresponding to a futureinterval of time may include place identifiers “restaurant” and “gym”,as well as a score of 0.9 for the place identifier “restaurant” and ascore of 0.1 for “gym”. It is further to be understood that the timeinterval that corresponds to the input states received by the routinepredictor module 122 need not be the same as the time interval thatcorresponds to the output states.

Referring briefly to FIG. 2, an exemplary predicted routine 200 of auser generated by the routine predictor module 122 is illustrated. Theexemplary predicted routine 200 includes, for each three-hour intervalover the next week, places that the user is predicted visit. Forinstance, on day one at time intervals one, two, and three, thepredicted routine 200 illustrates that the predictor module 122 haspredicted that the user will be at a first place. In contrast, on dayone at times four and five, the predicted routine 200 illustrates thatthe routine predictor module 122 has predicted that the user will be ata second place. Further, the predicted routine 200 illustrates that theroutine predictor module 122 has predicted places that the user willvisit several days in advance. Hence, the predicted routine 200illustrates that the routine predictor model 122 has predicted that theuser will be visiting the first place during time intervals one, two,and three of day six, and has predicted that the user will be visitingthe second location during time intervals four and five of day six.While the time intervals illustrated in the predicted routine 200 areshown as being three hours, it is emphasized that the time intervals maybe smaller or larger. For instance, the time intervals may be 5 minutes,10 minutes, 15 minutes, 30 minutes, etc. In another example, the timeintervals may be days (e.g., the routine protector module 122 maypredict a day in a year that the user will be on vacation).

Returning to FIG. 1, the memory 108 also includes a message generatormodule 124 that is configured to generate an electronic message andcause the computing system 100 to transmit the electronic message to themobile computing device 102 of the user (or some other computing deviceof the user). In an example, the electronic message may be anotification that is to be provided to the user, wherein suchnotification can be, for instance, a notification for the user to leavehis or her current location to reach a place that the user is predictedto visit at a time when the user is predicted to visit the place. Forexample, when the predicted routine generated by the routine predictormodule 122 indicates that the user is predicted to pick up his or herchild from a daycare center at 5:30 PM, and traffic conditions are suchthat it will take 15 minutes to reach the daycare center, the messagegenerator module 124 can generate an electronic notification thatnotifies the user to leave by 5:15 PM to reach the daycare center by5:30 PM. In another example, the message generator module 124 cangenerate a recommendation for the user based upon the predicted routinegenerated by the routine predictor module 122. For instance, when thepredicted routine indicates that the user is predicted to be at agrocery store at 6:30 PM three days from a current day, the messagegenerator module 124 can generate a message that recommends that theuser purchase an item at the grocery store based upon a sale that isoccurring on the item on the day that the user is predicted to visit thegrocery store. In another example, the message generator module 124 cangenerate a recommendation for the user to visit another place that isgeographically proximate to a place that the user is predicted to visit,such that the user is able to plan whether or not to travel to therecommended place.

Exemplary operation of the computing system 100 is now set forth. Asdescribed previously, the mobile computing device 102 generates locationentries over time and transmits the location entries 112 to thecomputing system 100. The computing system 100 stores the locationentries 112 in the data store 110, wherein each location entryincludes 1) a latitude/longitude pair; 2) a timestamp; and 3) ananonymized user identifier. The data cleaner module 114 “cleans” thelocation entries 112, wherein cleaning the location entries 112 caninclude removing each location entry that is not within some thresholdtime or distance from any other location entry in the location entries112. In addition, the data cleaner module 114 can remove locationentries from the location entries 112 that are stale. For instance, thedata cleaner module 114 can remove location entries from the locationentries 112 that are more than six months old. In another example, thedata cleaner module 114 can remove location entries from the locationentries 112 that are more than three months old.

Once the data cleaner module 114 has cleaned the location entries 112,the visit definer module 116 can identify visits of the user andgenerate visit entries 118 based upon the identified visits. Withreference now to FIG. 3, a schematic that depicts operation of the visitdefiner module 116 is illustrated. As shown in FIG. 3, location entriesin the location entries 112 are illustrated with respect to a geographicregion 300. As can be ascertained, a first set of location entries 302corresponds to a first place while a second set of location entries 304corresponds to a second place. The visit definer module 116 includes aclusterer module 306 that clusters location entries. The clusterermodule 306 can utilize any suitable clustering algorithm to cluster thelocation entries 112, wherein the clusterer module 306 takes intoaccount both geo-spatial and temporal closeness of location entries whenclustering the location entries 112. Accordingly, the clusterer module306 outputs location clusters, which are dense clusters of locationentries generated by the mobile computing device 102. An exemplaryclustering algorithm that can be employed by the clusterer module 306 istime-augmented DBSCAN, although other suitable clustering algorithms arecontemplated.

The visit definer module 116 additionally includes a filter module 308that can remove location clusters from the location clusters output bythe clusterer module 306, wherein the filter module 308 removes thelocation clusters based upon predefined filtering criteria. For example,the filter module 308 can remove clusters that consist of a singlelocation entry. In another example, the filter module 308 can removeclusters having location entries that do not span a predefined length oftime (e.g., a difference between an earliest timestamp and a latesttimestamp in the location clusters is less than the predefined length oftime, such as ten minutes). Hence, in an example, location clusters thatcorrespond to stops at traffic intersections may be removed from thelocation clusters.

The visit definer module 116 also includes a place assignor module 310that can assign an identifier for a place that spatially corresponds tothe location cluster. For instance, the place assignor module 310 caninclude or have access to a reverse geocoding service, wherein thereverse geocoding service can receive a latitude/longitude pair andoutput an identity of a place that spatially corresponds to suchlatitude/longitude pair. The place assignor module 310 can utilize anysuitable technique to ascertain a latitude/longitude pair to provide tothe reverse geocoding service. For instance, the place assignor module310 can compute mean or median latitude and longitude values based uponlatitude/longitude pairs in a location cluster and provide a mean/medianlatitude value and a mean/median longitude value to the reversegeocoding service. The reverse geocoding service, based upon thelatitude/longitude pair, can return an identity of a place (if any) thatcorresponds to the latitude/longitude pair. In another example, theplace assignor module 310 can provide each latitude/longitude pair ofeach location entry in a location cluster to the reverse geocodingservice, and the reverse geocoding service can output an identity of aplace (if any) for each received latitude/longitude pair. The placeassignor module 310 can then select the place identity that is assignedto the most latitude/longitude pairs by the reverse geocoding service.

The visit definer module 116 generates the visit entries 118 based uponthe location clusters output by the clusterer module 306 (e.g., theclusters not filtered by the filter module 308) and the placeidentifiers assigned to the clusters by the place assignor module 310.More specifically, the visit definer module 116 can create visit entriesthat correspond to such clusters, wherein each visit entry includes: 1)an anonymized user identifier; 2) an identifier of a place ascertainedfor the location cluster by the place assignor module 310; 3) a datewhen the visit started (as indicated by the earliest timestamp in thelocation cluster); 4) a time when the visit started (as indicated by theearliest timestamp in the location cluster); and 5) a duration of thevisit (e.g., a difference between the earliest timestamp and latesttimestamp in the location cluster). In the example shown in FIG. 3, theclusterer module 306 has created two location clusters that correspondto the sets of location entries 302 and 304. The visit definer module116 generates two visit entries 312 and 314 based upon such locationclusters, wherein each visit entry includes the data noted above.

Now referring to FIG. 4, a schematic illustrating operation of the inputdefiner module 120 is depicted. The input definer module 120 receivesthe visit entries 118, wherein each visit in the visit entries 118occurred within some predefined past window of time (e.g., the lastthree months, the last month, etc.). The input definer module 120generates a sequence of input states 402, wherein each state correspondsto a respective interval of time, and further wherein each interval oftime is of a predefined length. As illustrated in FIG. 4, an exemplarysequence of input states includes j states that correspond to jintervals of time of predefined length over some past window of time(e.g., the last month). Thus, the input definer module 120 transformsthe visit entries 118 into an input sequence i with states {x_(i) _(j)=(C_(i) _(j) , ω_(i) _(j) )}_(j=1) ^(n), where C_(i) _(j) is theidentifier of the place in a visit entry for the jth interval, and ω_(i)_(j) =(u_(i), t_(i) _(j) , . . . ) is a context vector having featurescapturing the anonymized user identifier and different temporal aspectsassociated with the jth interval, such as: day of month, day of week,business day, weekend, time of day, etc. As referenced previously, theremay be one or more intervals that do not temporally correspond to avisit entry. For input states that correspond to such intervals, theinput definer module 120 can set C_(i) _(j) as “unknown”, such that thesequence of input states 402 includes one or more states with “unknown”labels. In addition, with respect to a state that temporally correspondsto an interval of time where two or more separate visits correspond tosuch interval of time, the input definer module 120 can assign a placeidentifier to such state by identifying a visit entry that correspondsto more of the time interval than any other visit entry, and thereafterassign a place identifier to the state based upon the identified visitentry.

Referring now to FIG. 5, a schematic that illustrates exemplaryoperation of the routine predictor module 122 is illustrated. Theroutine predictor module 122 receives the sequence of input states 402output by the input definer module 120 and generates a predicted routineof the user based upon the sequence of input states 402. In an exemplaryembodiment, the routine predictor module 122 can employ a frequentitemset mining algorithm in connection with generating the predictedroutine of the user. To that end, the routine protector module 122 caninclude an item generator module 502 that is configured to generate, foreach state in the input sequence of states 402, a plurality of itemlabels. The item labels generated by the item generator module 502 canbe temporal, spatial, based upon user interests, etc. For instance, withrespect to a state that corresponds to a time interval of 8:00 AM-9:00AM on a Wednesday when the user is at home, the item generator module502 can generate item labels “8”, “morning”, “AM”, “home”, “Wednesday”,“weekday”, etc., and can assign such item labels to the state. Foranother state in the sequence of states 402 that corresponds to the timeinterval of 5:00 PM-5:30 PM on a Friday, the item generator module 502can generate item labels “17”, “evening”, “PM”, “gym”, “Friday”,“weekday”, etc. A table 503 depicting exemplary item labels that can beassigned to states in the sequence of states 402 is depicted.

The routine predictor module 122 also includes a frequent itemset miningmodule 504 that is configured to employ a frequent itemset miningalgorithm to identify co-occurring item labels across states. In anexemplary embodiment, the frequent itemset mining algorithm can be anassociation rule mining (ARM) algorithm. The frequent itemset miningmodule 504 identifies rule patterns based upon co-occurring item labelsin different states. An exemplary rule pattern can be “at 8:00 AM onweekdays the user is at work.” The frequent itemset mining module 504can identify the rule patterns as being rule patterns that have athreshold amount of support, a threshold amount of confidence, and athreshold amount of lift. The routine predictor module 122, based uponthe identified rule patterns, can generate the predicted routine of theuser. For example, the routine predictor module 122 can generate thepredicted routine of the user such that at 8:00 AM on weekdays the useris predicted to be at work. In addition, the routine predictor module122 can output data that indicates why the routine predictor module 122has inferred that the user will be at a certain place at a certain timein the future. For instance, the routine predictor module 122 can outputan indication that the user in the past has gone to the gym at 5:00 PMon Tuesdays 75% of the time (based upon item labels assigned to thesequence of states 402). Accordingly, the user can intuit why theroutine predictor module 122 has output a notification to the userpertaining to the predicted visit to the gym.

Now referring to FIG. 6, an exemplary sequence to sequence model 600that can be employed by the routine predictor module 122 to generatepredicted routines of users is illustrated. While the frequent itemsetmining approach described above is intuitive to end users (e.g., a usercan understand why the routine predictor module 122 has predicted thatthe user will be visiting a place at a time in the future), there aresome deficiencies associated with the use of frequent itemset mining.For instance, frequent itemset mining is not well-suited to identifychanges in trends; instead, the frequent itemset mining moduleidentifies frequent co-occurrences of item labels that correspond totime intervals in the past, identifies rule patterns, and then uses therule patterns to predict visits going forward. In addition, frequentitemset mining approaches are not configured to identify conditionaldependencies. In an example, the user may go to the gym on Tuesday onlywhen the user did not go to the gym on Monday. The frequent itemsetmining module 504 is not configured to identify such conditionaldependencies unless the conditions are explicitly represented as items.

Thus, in another exemplary embodiment, the routine predictor module 122can employ the sequence to sequence model 600 to generate the predictedroutine of the user. The exemplary sequence to sequence model 600comprises an encoder 602 and a decoder 604. The encoder 602 includes afirst layer of RNNs (e.g., LSTMs) and a second layer of RNNs, while thedecoder 604 also includes a first layer of RNNs and a second layer ofRNNs. The sequence to sequence model 600 also includes an attentionmechanism 606.

The sequence to sequence model 600 receives the input sequence of states402 and outputs a sequence of predicted states, wherein the predictedstates correspond to future intervals of time of predefined length (oversome predefined window of time in the future). Hence, in an example, thesequence to sequence model 600 can receive the input sequence of states402, where each state in the input sequence of states 402 corresponds toa 30-minute time interval, and further wherein the input sequence ofstates 402 corresponds to a two-week window. The sequence to sequencemodel 600 can output a predicted sequence of k states, wherein each ofthe predicted states corresponds to a 30-minute time interval, andfurther wherein the predicted sequence of k states collectivelycorresponds to a future two-week window of time. In the exemplarysequence to sequence model 600, every state corresponds to a locationinterval and its context. While the sequence to sequence model 600 isillustrated as having a particular architecture, it is to be understoodthat other sequence to sequence model architecture are contemplated,wherein such architectures are configured to receive a sequence ofobserved states and output a sequence of predicted states (which canthen be mapped to a routine).

Referring now to FIG. 7, an exemplary convolutional network 700 that canbe included in the routine predictor module 122 is illustrated, whereinthe routine predictor module 122 utilizes the convolutional network 700to generate the predicted routine of the user. The convolutional network700, in an example, can be referred to as a masked time-dilatedconvolutional network (MTCN). The convolutional network 700 includescustom dilations and masking. The network 700 receives the inputsequence of states 402 and embeds the identifier of the place C_(i) _(j)and the context ω_(i) _(j) to create embedded states {circumflex over(x)}_(i) _(j) . With respect to the input to the convolutional network700, the value of C_(i) _(j+k) can be set to zero. The network 700comprises an embedding layer 701 followed by a time-dilatedconvolutional network (TCN) block 702, wherein the TCN block 702comprises several custom dilation layers 704-708. The custom dilationslayers 704-706 are applied to the embedded states. The MTCN can alsooptionally include an attention layer that includes a context vector 710that follows the embedding layer 701 and alignment weights 712, whereinthe attention layer is well-suited to surface input states to which theconvolutional network 700 attends.

Dilations are increments in the TCN block 702 (bold rectangles in FIG.7). Dilations are the reason that the convolutional network 700 is ableto handle long input sequences; every dilation layer increases areceptive field in the convolutional network 700 exponentially. In theconvolutional network 700, the dilation size and convolution filterlengths are set to capture the expected regularities in user routines.For example, assuming input states correspond to 30 minute timeintervals, dilations of size 1, 2, 4, and 8 can be used to detectcorrelated visits within a few hours, dilations of size 48, 96, and 144can be used to detect correlated visits at the current time a few daysago (e.g., 2-5 days ago), a dilation size of 336 can be used to detectcorrelated visits at this time a week ago, etc. It has been observedthat custom dilations perform better for routine prediction compared todefault power of two dilations.

Masking has recently attracted attention due to significant improvementsintroduced by the BERT algorithm on a diversity of natural languageprocessing (NLP) tasks. Masking pertains to perturbing a small randomsample of the input sequence states 402, thus achieving a form ofregularization and avoiding over-fitting. MTCN uses masking and trainingin the following way: the input has j+k states, combining the j statesin the input sequence 402 and the k target states. The targets are the(j+k) place identifiers for these states. In the input sequence 402, theplace identifiers for the k last dates are replaced with padding zeroes.Among the rest, some percentage (e.g., 15%) of observed days can beselected, and states corresponding to such days can be masked. Theroutine predictor module 122 can, for a first percentage (e.g., 80%) ofthe masked states, replace the place identifier with a zero. For asecond percentage (e.g., 10%) of the masked states, the routinepredictor module 122 can not change the place identifier. For a thirdpercentage (e.g., 10%) of the masked states, the place identifier israndomly replaced with another place identifier. The loss is a summationof the loss on the target k states plus the loss on the masked states.In scoring, the place identifiers for the observed initial j states arekept unchanged and the target k are padded with zero.

The convolutional network 700 can be trained with two loss functions: 1)default loss—cross-entropy with softmax for every interval x_(ij) in thetarget and masked days; and 2) custom loss—instead of using equalweights for each interval, the custom loss function associates equalweights with each visit (a visit can span multiple intervals). A problemwith the default loss function is that if there is a dominant state thedefault loss function would prefer it as the safe prediction, e.g., ifthe user is observed mostly at home then it tends to over-predict theuser being at home as the incurred penalty for missing a very shortvisit is small. The custom loss function focuses on recalling allvisits; that is, comparable loss is incurred for mis-predicting bothshort and long visits.

Experimentally, the convolutional network 700 was identified to performwith greater accuracy than the sequence to sequence model 600 depictedin FIG. 6. It is to be understood, however, that in someimplementations, the routine predictor module 122 can utilize two ormore of the approaches described herein (frequent itemset mining,sequence to sequence models that include RNNs, and/or convolutionalnetworks). For example, when the convolutional network and the frequentitemset mining approach output consistent results, statistical datagenerated by the frequent itemset mining module 504 can be surfaced tothe user so that the user can readily understand why the computingsystem 100 predicted that the user would be at a particular location ata certain future point in time.

While the examples set forth above relate to generating a predictedroutine for a user, it is to be understood that the technologiesdescribed herein can be employed to predict routines of several users,and the predicted routines of the several users can be subjected toanalytics algorithms. Accordingly, for instance, the computing system100 can output an indication that a certain percentage of people areexpected to leave for work at a certain time. This information can thenbe used, for instance, for traffic planning by a governmental body. Inanother example, the computing system 100 can output an indication thatsome percentage of people are predicted to go to the gym after work onweekdays; this information can be used by a construction company toascertain where to build a building that is to be used as a gym.

Turning now to FIG. 8, an exemplary graphical user interface (GUI) 800is illustrated. For instance, the GUI 800 may be for a digital personalassistant. The GUI 800 includes a notification set forth to the userthat the user is to leave his or her current location at a certain timeto reach a place that the user is predicted to visit at a time that theuser is predicted to visit the place. This notification can be generatedbased upon a predicted routine output by the routine predictor module122 and based upon analysis of traffic. In another example, thenotification can be an audio notification presented by a smart speaker.In another example, the GUI can be for a wearable device, such as awatch, and may have haptic feedback associated therewith.

With reference now to FIG. 9, another exemplary computing system 900 isillustrated. The computing system 900 includes a processor 902 andmemory 904, wherein the memory 904 has instructions stored therein thatare executed by the processor 902. The computing system 900 alsocomprises a data store 906, wherein the data store 906 stores severalpredicted user routines 908-910. The predicted user routines 908-910 cancorrespond to a same future window of time, can correspond to differentbut overlapping future windows of time, or can correspond tonon-overlapping future windows of time. Further, in an example, thepredicted user routines 908-910 can be for users who reside in a samearea (e.g., city, state, or country), users who are of similar age,users who have similar interests, etc.). The predicted user routines908-910 can be generated by the computing system 100, wherein each ofthe predicted user routines 908-910 can be predicted routines for adifferent respective user.

The memory 904 has an analytics module 912 loaded therein, wherein theanalytics module 912 receives the predicted user routines 908-910 andgenerates analytics data 914 based upon the predicted user routines908-910. For example, the analytics data 914 can indicate when arelatively large number of users are predicted to be at a particularplace, can indicate that a relatively large number of users go to afirst place and immediately afterward go to a second place, and soforth. Hence, the analytics data 914 can include information that may beuseful to a city planning department (e.g., a large number of users areexpected to be at a public transportation terminal), information thatmay be useful to a developer (e.g., a large number of users are expectedto travel to a bank after grocery shopping), and so forth.

FIG. 10 illustrates an exemplary methodology relating to generating apredicted routine of a user is illustrated. While the methodology isshown and described as being a series of acts that are performed in asequence, it is to be understood and appreciated that the methodology isnot limited by the order of the sequence. For example, some acts canoccur in a different order than what is described herein. In addition,an act can occur concurrently with another act. Further, in someinstances, not all acts may be required to implement a methodologydescribed herein.

Moreover, the acts described herein may be computer-executableinstructions that can be implemented by one or more processors and/orstored on a computer-readable medium or media. The computer-executableinstructions can include a routine, a sub-routine, programs, a thread ofexecution, and/or the like. Still further, results of acts of themethodologies can be stored in a computer-readable medium, displayed ona display device, and/or the like.

The methodology 1000 starts at 1002, and at 1004 a plurality of visitsover a plurality of days are defined for a user, wherein the pluralityof visits are defined based upon location data generated by a mobilecomputing device of the user. Each visit in the plurality of visitscomprises: 1) a date of the visit; 2) an identity of a place that theuser visited (where the identity of the place can be a name of the placeand/or a category assigned to the place); 3) a start time of the visit,which identifies when the location data generated by the mobilecomputing device indicates that the mobile computing device arrived atthe place; and 4) data that is indicative of a duration of the visit,wherein the duration of the visit is an amount of time that the mobilecomputing device is determined to be at the place from the start time towhen the mobile computing device departed the place.

At 1006, based upon the plurality of visits over the plurality of days,a predicted routine of the user is generated. The predicted routineincludes a plurality of future locations of the user during a respectiveplurality of time blocks in the future, wherein the time blocks are of apredefined length, and further wherein the plurality of time blocks areconsecutive and cover several days. For instance, a frequent itemsetmining algorithm can be used to generate the predicted routine. Inanother example, a sequence to sequence model that includes several RNNscan be used to generate the predicted routine. In yet another example, aMTCN can be employed to generate the predicted routine.

At 1008, an electronic message is generated based upon a predictedlocation of the user for a future time block in the predicted routine.The electronic message can be a notification (e.g., “leave at 6:00 PM”),can be a recommendation (e.g., “I predict that you will be at thegrocery store tomorrow—here is a recommended product that is on sale”),or other suitable electronic message. At 1010, the electronic message istransmitted to the mobile computing device of the user or to a secondcomputing device. The methodology 1000 completes at 1012.

Referring now to FIG. 11, a high-level illustration of an exemplarycomputing device 1100 that can be used in accordance with the systemsand methodologies disclosed herein is illustrated. For instance, thecomputing device 1100 may be used in a system that supports generating apredicted routine of a user. By way of another example, the computingdevice 1100 can be used in a system that is configured to train a MTCN.The computing device 1100 includes at least one processor 1102 thatexecutes instructions that are stored in a memory 1104. The instructionsmay be, for instance, instructions for implementing functionalitydescribed as being carried out by one or more components discussed aboveor instructions for implementing one or more of the methods describedabove. The processor 1102 may access the memory 1104 by way of a systembus 1106. In addition to storing executable instructions, the memory1104 may also store location entries generated by mobile computingdevices, visit entries, etc.

The computing device 1100 additionally includes a data store 1108 thatis accessible by the processor 1102 by way of the system bus 1106. Thedata store 1108 may include executable instructions, location entries,visit entries, a sequence of states, etc. The computing device 1100 alsoincludes an input interface 1110 that allows external devices tocommunicate with the computing device 1100. For instance, the inputinterface 1110 may be used to receive instructions from an externalcomputer device, from a user, etc. The computing device 1100 alsoincludes an output interface 1112 that interfaces the computing device1100 with one or more external devices. For example, the computingdevice 1100 may display text, images, etc. by way of the outputinterface 1112.

It is contemplated that the external devices that communicate with thecomputing device 1100 via the input interface 1110 and the outputinterface 1112 can be included in an environment that providessubstantially any type of user interface with which a user can interact.Examples of user interface types include graphical user interfaces,natural user interfaces, and so forth. For instance, a graphical userinterface may accept input from a user employing input device(s) such asa keyboard, mouse, remote control, or the like and provide output on anoutput device such as a display. Further, a natural user interface mayenable a user to interact with the computing device 1100 in a mannerfree from constraints imposed by input device such as keyboards, mice,remote controls, and the like. Rather, a natural user interface can relyon speech recognition, touch and stylus recognition, gesture recognitionboth on screen and adjacent to the screen, air gestures, head and eyetracking, voice and speech, vision, touch, gestures, machineintelligence, and so forth.

Additionally, while illustrated as a single system, it is to beunderstood that the computing device 1100 may be a distributed system.Thus, for instance, several devices may be in communication by way of anetwork connection and may collectively perform tasks described as beingperformed by the computing device 1100.

Various functions described herein can be implemented in hardware,software, or any combination thereof. If implemented in software, thefunctions can be stored on or transmitted over as one or moreinstructions or code on a computer-readable medium. Computer-readablemedia includes computer-readable storage media. A computer-readablestorage media can be any available storage media that can be accessed bya computer. By way of example, and not limitation, suchcomputer-readable storage media can comprise RAM, ROM, EEPROM, CD-ROM orother optical disk storage, magnetic disk storage or other magneticstorage devices, or any other medium that can be used to carry or storedesired program code in the form of instructions or data structures andthat can be accessed by a computer. Disk and disc, as used herein,include compact disc (CD), laser disc, optical disc, digital versatiledisc (DVD), floppy disk, and Blu-ray disc (BD), where disks usuallyreproduce data magnetically and discs usually reproduce data opticallywith lasers. Further, a propagated signal is not included within thescope of computer-readable storage media. Computer-readable media alsoincludes communication media including any medium that facilitatestransfer of a computer program from one place to another. A connection,for instance, can be a communication medium. For example, if thesoftware is transmitted from a website, server, or other remote sourceusing a coaxial cable, fiber optic cable, twisted pair, digitalsubscriber line (DSL), or wireless technologies such as infrared, radio,and microwave, then the coaxial cable, fiber optic cable, twisted pair,DSL, or wireless technologies such as infrared, radio and microwave areincluded in the definition of communication medium.

Combinations of the above should also be included within the scope ofcomputer-readable media.

Alternatively, or in addition, the functionally described herein can beperformed, at least in part, by one or more hardware logic components.For example, and without limitation, illustrative types of hardwarelogic components that can be used include Field-programmable Gate Arrays(FPGAs), Program-specific Integrated Circuits (ASICs), Program-specificStandard Products (ASSPs), System-on-a-chip systems (SOCs), ComplexProgrammable Logic Devices (CPLDs), etc.

What has been described above includes examples of one or moreembodiments. It is, of course, not possible to describe everyconceivable modification and alteration of the above devices ormethodologies for purposes of describing the aforementioned aspects, butone of ordinary skill in the art can recognize that many furthermodifications and permutations of various aspects are possible.Accordingly, the described aspects are intended to embrace all suchalterations, modifications, and variations that fall within the spiritand scope of the appended claims. Furthermore, to the extent that theterm “includes” is used in either the detailed description or theclaims, such term is intended to be inclusive in a manner similar to theterm “comprising” as “comprising” is interpreted when employed as atransitional word in a claim.

1. A computing system comprising: a processor; and memory storinginstructions that, when executed by the processor, cause the processorto perform acts comprising: generating, with respect to a user of amobile computing device, a plurality of visit entries based uponlocation data generated by the mobile computing device of the user,wherein each visit entry comprises: a date of a visit; an identity of aplace of the visit; a start time of the visit, wherein the start timeidentifies when the location data generated by the mobile computingdevice indicates that the mobile computing device arrived at the place;and data that is indicative of a duration of the visit, wherein theduration of the visit is an amount of time that the mobile computingdevice was determined to be at the place from the start time to when themobile computing device departed the place, wherein the visit entriescollectively correspond to a plurality of days; based upon the pluralityof visit entries, generating a predicted routine of the user, whereinthe predicted routine comprises an ordered sequence of places that theuser is predicted to visit over a plurality of future time blocks ofpredefined length over several days, wherein the ordered sequence ofplaces includes a place that the user is predicted to visit during afuture time block and a second place that the user is predicted to visitduring a second future time block; transmitting an electronic message tothe mobile computing device of the user or to a second computing devicebased upon the predicted routine of the user; and transmitting a secondelectronic message to the mobile computing device of the user or to thesecond computing device based upon the predicted routine of the user,wherein the second electronic message is a notification that instructsthe user to perform an action that corresponds to the second place. 2.The computing system of claim 1, wherein generating the plurality ofvisit entries comprises clustering location entries in the location datato generate location clusters, wherein each location entry includes alatitude/longitude pair and a timestamp, and further wherein thelocation entries are clustered as a function of time and space.
 3. Thecomputing system of claim 1, wherein the several days comprises sevendays.
 4. The computing system of claim 1, wherein the several dayscomprises thirty days.
 5. The computing system of claim 1, wherein thepredefined length is thirty minutes.
 6. The computing system of claim 1,the acts further comprising: assigning, to a sequence of time intervalsof the predefined length, respective identifiers of places based uponthe defined plurality of visits to generate a sequence of labels,wherein the plurality of locations for the user are predicted based uponthe sequence of labels.
 7. The computing system of claim 6, the actsfurther comprising: assigning, to each of several time intervals in thesequence of time intervals, a plurality of item labels, wherein theplurality of item labels comprise a first item label that is indicativeof a day of the week, a second item label that is indicative of a timeof day, and a third item label that is indicative of an identity of aplace, wherein predicting, for the plurality of future time blocks ofpredefined length over the several days, the places that will be visitedby the user comprises: computing frequencies of co-occurrences of itemlabels across the sequence of time intervals, wherein the plurality ofdifferent places will be visited by the user are predicted based uponthe computed frequencies of co-occurrences of the item labels across thesequence of time intervals.
 8. The computing system of claim 6, the actsfurther comprising: providing the sequence of labels to a sequence tosequence model, wherein the sequence to sequence model comprises anencoder and a decoder, wherein the encoder comprises a first pluralityof recurrent neural networks (RNNs), the decoder comprises a secondplurality of RNNs, and further wherein the decoder outputs the pluralityof different places that will be visited by the user.
 9. The computingsystem of claim 6, the acts further comprising: providing the sequenceof labels to a convolutional network, wherein the convolutional networkoutputs the plurality of different places that will be visited by theuser.
 10. The computing system of claim 9, wherein the convolutionalnetwork is a time-dilated convolutional network.
 11. The computingsystem of claim 10, wherein the convolutional network is a maskedtime-dilated convolutional network.
 12. The computing system of claim 1,the acts further comprising generating a third electronic message basedupon a third place that is predicted to be visited by the user during athird future time block, wherein the third electronic message comprisesa notification regarding a time when the user is to leave a currentlocation to reach the third place prior to the third future time block.13. (canceled)
 14. A method executed by a computing system, the methodcomprising: retrieving location data generated by a mobile computingdevice over time, wherein the location data comprises pairs oflatitude/longitude coordinates, wherein each pair of latitude/longitudecoordinates has a respective timestamp assigned thereto; defining visitsover a plurality of days based upon the location data, wherein a visitcomprises: an identity of a place visited by the user; a date when theuser visited the place; a time when the visit started; and a duration ofthe visit; based upon the defined visits, generating a predicted routineof the user, wherein the predicted routine of the user comprises anordered sequence of places that the user is predicted to visit overseveral time intervals of predefined length, wherein the orderedsequence of places includes a place that the user is predicted to visitduring a future time interval and a second place that the user ispredicted to visit during a second time interval; transmitting anelectronic message to the mobile computing device of the user based uponthe predicted routine of the user; and transmitting a second electronicmessage to the mobile computing device of the user based upon thepredicted routine of the user, wherein the second electronic message isa notification that instructs the user to perform an action at thesecond place based upon the predicted routine of the user. 15-16.(canceled)
 17. The method of claim 14, further comprising: assigning, toa sequence of time intervals of the predefined length, respective labelsbased upon the defined plurality of visits to generate a sequence oflabels, wherein the labels are indicative of places previously visitedby the user, wherein the predicted routine of the user is generatedbased upon the respective labels assigned to the sequence of timeintervals.
 18. The method of claim 17, further comprising: assigning, toeach of several time intervals in the sequence of time intervals, aplurality of item labels, wherein the plurality of item labels comprisea first item label that is indicative of a day of the week, a seconditem label that is indicative of a time of day, and a third item labelthat is indicative of a place visited by the user during the timeinterval, wherein predicting the routine comprises: computingfrequencies of co-occurrences of item labels across the sequence of timeintervals, wherein the predicted routine is generated based upon thecomputed frequencies of co-occurrences of the item labels across thesequence of time intervals.
 19. The method of claim 17, furthercomprising: providing the sequence of labels to a convolutional network,wherein the convolutional network outputs the predicted routine of theuser.
 20. A computer-readable storage medium comprising instructionsthat, when executed by a processor, cause the processor to perform actscomprising: retrieving location data generated by a mobile computingdevice over time, wherein the location data comprises pairs oflatitude/longitude coordinates, wherein each pair of latitude/longitudecoordinates has a respective timestamp assigned thereto; defining visitsover a plurality of days based upon the location data, wherein a visitcomprises: an identity of a place visited by the user; a date when theuser visited the place; a time when the visit started; and a duration ofthe visit; generating a predicted routine of a user based upon thevisits, wherein the predicted routine of the user comprises a sequenceof places that the user is predicted to visit over time intervals ofpredefined length for at least one week, wherein the sequence of placescomprises a first place that the user is predicted to visit during afirst time interval and a second place that the user is predicted tovisit during a second time interval; transmitting an electronic messageto the mobile computing device of the user based upon the predictedroutine of the user, wherein the electronic message comprises one of anotification that is based upon a place that the user is predicted tovisit in the predicted routine or a recommendation that is based uponthe place that the user is predicted to visit in the predicted routine;and transmitting a second electronic message to the mobile computingdevice of the user based upon the predicted routine of the user, whereinthe second electronic message is a notification that instructs the userto perform an action at the second place based upon the predictedroutine of the user.
 21. The method of claim 14, wherein generating thepredicted routine of the user comprises: providing the defined visits asinput to a sequence to sequence model, wherein the sequence to sequencemodel outputs the predicted routine of the user based upon the definedvisits.
 22. The method of claim 19, wherein the convolutional network isa masked time-dilated convolutional network.
 23. The computer-readablestorage medium of claim 20, wherein a masked time-dilated convolutionalnetwork is employed to generate the predicted routine of the user.